package com.agricultural.machine.common;

/**
 * 农机设备接口
 */
public interface IMachine {
    /**
     * 获取农机ID
     */
    String getMachineId();

    /**
     * 获取农机类型
     */
    String getType();

    /**
     * 获取农机状态
     */
    MachineState getState();

    /**
     * 设置农机状态
     */
    void setState(MachineState state);

    /**
     * 启动农机
     */
    void start();

    /**
     * 停止农机
     */
    void stop();

    /**
     * 执行任务
     */
    void executeTask(String task);

    /**
     * 更新位置
     */
    void updatePosition(double x, double y);

    /**
     * 获取位置
     */
    String getPosition();

    /**
     * 执行工作
     */
    void work();
    
    /**
     * 获取当前X坐标
     */
    default double getCurrentX() {
        return 0.0;
    }
    
    /**
     * 获取当前Y坐标
     */
    default double getCurrentY() {
        return 0.0;
    }
    
    /**
     * 检查农机是否运行中
     */
    default boolean isRunning() {
        return false;
    }
    
    /**
     * 设置紧急停止状态
     */
    default void setEmergencyStop(boolean emergency) {
    }
    
    /**
     * 检查是否处于紧急停止状态
     */
    default boolean isEmergencyStopped() {
        return false;
    }
} 